package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.UserLike;
import com.tanhua.dubbo.server.vo.PageInfo;

import java.util.List;

/**
 * Api 探花交友
 *
 * @author zZZFf
 * @since 2021/7/10 11:00
 */
public interface UserLikeApi {
    /**
     * 喜欢
     *
     * @param userId     用户id
     * @param likeUserId 喜欢用户id
     * @return
     */
    Boolean likeUser(Long userId, Long likeUserId);

    /**
     * 不喜欢
     *
     * @param userId     用户id
     * @param likeUserId 喜欢用户id
     * @return
     */
    Boolean notLikeUser(Long userId, Long likeUserId);

    /**
     * 用户是否喜欢
     *
     * @param userId     用户id
     * @param likeUserId 喜欢用户id
     * @return
     */
    Boolean isLike(Long userId, Long likeUserId);

    /**
     * 用户是否不喜欢
     *
     * @param userId     用户id
     * @param likeUserId 喜欢用户id
     * @return
     */
    Boolean isNotLike(Long userId, Long likeUserId);

    /**
     * 是否相互喜欢
     *
     * @param userId     用户id
     * @param likeUserId 喜欢用户id
     * @return
     */
    Boolean isMutualLike(Long userId, Long likeUserId);


    /**
     * 查询喜欢用户id列表
     *
     * @param userId 用户id
     * @return
     */
    List<Long> queryLikeIdList(Long userId);

    /**
     * 查询不喜欢用户id列表
     *
     * @param userId 用户id
     * @return
     */
    List<Long> queryNotLikeList(Long userId);


    /**
     * 相互喜欢的数量
     *
     * @param userId 用户id
     * @return 互相喜欢数
     */
    Long queryMutualLikeCount(Long userId);

    /**
     * 喜欢数
     *
     * @param userId 用户id
     * @return 喜欢数【我喜欢】
     */
    Long queryLikeCount(Long userId);

    /**
     * 粉丝数
     *
     * @param userId 用户id
     * @return 粉丝数【被喜欢】
     */
    Long queryFanCount(Long userId);

    /**
     * 查询相互喜欢列表
     *
     * @param userId   用户id
     * @param page     当前页
     * @param pageSize 页大小
     * @return
     */
    PageInfo<UserLike> queryMutualLikeList(Long userId, Integer page, Integer pageSize);

    /**
     * 查询我喜欢的列表
     *
     * @param userId   用户id
     * @param page     当前页
     * @param pageSize 页大小
     * @return
     */
    PageInfo<UserLike> queryLikeList(Long userId, Integer page, Integer pageSize);

    /**
     * 查询粉丝列表
     *
     * @param userId   用户id
     * @param page     当前页
     * @param pageSize 页大小
     * @return
     */
    PageInfo<UserLike> queryFanList(Long userId, Integer page, Integer pageSize);
}
